package com.demo.java.OD601_650.OD624;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【积木最远距离(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146884406
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        Long count = Long.valueOf(in.nextInt());  // 获取数字的数量

        // 用HashMap来记录每个数字出现的位置
        HashMap<Long, List<Long>> blocks = new HashMap<Long, List<Long>>();

        // 遍历输入的数字，并记录其出现的位置
        for (Long i = Long.valueOf(0); i < count; i++) {
            Long num = Long.valueOf(in.nextInt());  // 读取当前数字

            // 如果该数字已经出现过，更新其位置列表
            if (blocks.containsKey(num)) {
                List<Long> block_pos = blocks.get(num);
                block_pos.add(i);  // 添加当前数字的位置到其列表中
                blocks.put(num, block_pos);
            } else {
                // 如果该数字还没有出现过，初始化一个新的位置列表
                List<Long> block_pos = new ArrayList<Long>();
                block_pos.add(i);  // 将当前数字的位置加入列表
                blocks.put(num, block_pos);
            }
        }

        // 初始化最大距离为-1（表示如果没有重复数字，则返回-1）
        Long max_distance = Long.valueOf(-1);

        // 遍历每个数字的出现位置列表，计算最大距离
        for (Map.Entry<Long, List<Long>> entry : blocks.entrySet()) {
            if (entry.getValue().size() > 1) {  // 只考虑出现多次的数字
                Long distance = Collections.max(entry.getValue()) - Collections.min(entry.getValue());
                max_distance = Math.max(max_distance, distance);  // 更新最大距离
            }
        }

        // 输出最大距离
        System.out.println(max_distance);
    }
}